package com.sxmfyy.common.util;

/**
 * 字符串工具类
 * 全部包含非空判断
 * 待完善（若使用Hutool工具包可省）
 */
public class StringUtil {
    /**
     * 定义空字符串
     */
    public static final String EMPTY = "";

    /**
     * 判断字符串是否为空
     *
     * @param str 字符串
     * @return true:空 false:非空
     */
    public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
    }

    /**
     * 判断字符串是否非空
     *
     * @param str 待判断的字符串
     * @return true:非空 false:空
     */
    public static boolean isNotEmpty(String str) {
        return !isEmpty(str);
    }

    /**
     * 获取字符串长度
     *
     * @param str 字符串
     * @return 字符串长度
     */
    public static int length(String str) {
        return str == null ? 0 : str.length();
    }

    /**
     * 判断字符串是否包含某段字符串
     *
     * @param sourceStr 原字符串
     * @param str 是否包含的字符串
     * @return true:包含 false:不包含
     */
    public static boolean contains(String sourceStr, String str) {
        return sourceStr != null && sourceStr.contains(str);
    }

    /**
     * 判断字符串是否包含某段字符串（忽略大小写包含）
     *
     * @param sourceStr 原字符串
     * @param str 是否包含的字符串
     * @return true:包含 false:不包含
     */
    public static boolean containsIgnoreCase(String sourceStr, String str) {
        return sourceStr != null && sourceStr.toLowerCase().contains(str.toLowerCase());
    }

    /**
     * 获取字符串的子串
     *
     * @param str 源字符串
     * @param startIndex 开始索引
     * @param endIndex 结束索引
     * @return 子串
     */
    public static String substring(String str, int startIndex, int endIndex) {
        if (str == null) {
            return null;
        }
        if (endIndex > str.length()) {
            endIndex = str.length();
        }
        return str.substring(startIndex, endIndex);
    }
}
